home *** CD-ROM | disk | FTP | other *** search
- /* ------------------------------------------------------------------------------
-
- FILENAME
- Messages.h
-
- DESCRIPTION
- This file contains all of the public data structures, constants, and
- function declarations for the Message Manager.
-
- COPYRIGHT
- Copyright © Apple Computer, Inc. 1989, 1990, 1991, 1992, 1993
- All rights reserved.
-
- ------------------------------------------------------------------------------- */
-
-
- #ifndef __MESSAGEMANAGER__
- #define __MESSAGEMANAGER__
-
- #ifndef __TYPES__
- #include <Types.h>
- #endif
-
-
- /*************/
- /* Constants */
- /*************/
-
-
- /* Message Manager Gestalt Selector... */
-
-
- enum {
- gestaltMessageMgrVersion = 'mess'
- };
-
-
- /* Message Manager Error Result Codes... */
-
-
- enum {
- messageStopLoopingErr = -5775,
- cantDeleteRunningHandlerErr = -5776,
- noMessageTableErr = -5777,
- dupSignatureErr = -5778,
-
- messageNotReceivedErr = -5799
- };
-
-
- /* Message Manager Class Options... */
-
-
- enum {
- messageClassNoOptions = 0x00000000,
- messageClassIgnoreResult = 0x80000000
- };
-
-
- /* Message Manager Useful Constants... */
-
-
- enum {
- topMessageHandler = 0 /* indicates top handler when position is expected */
- };
-
-
- /* the Message Manager trap */
-
-
- #define messageManagerTrap 0xABFB /* C++ will choke on an enum in a trap definition */
-
-
- /* Message Manager Selectors... */
-
-
- #define sendObjectMessageSelector 0x702F
- #define sendObjectMessageToSelector 0x7030
- #define startObjectMessageAtSelector 0x7031
- #define sendMessageSelector 0x7032
- #define sendMessageToSelector 0x7033
- #define startMessageAtSelector 0x7034
- #define forwardSelector 0x7035
- #define forwardThisSelector 0x7036
-
-
- /*************/
- /* Macros */
- /*************/
-
-
- /* the SendObjectMessageGlue macro assumes the message target is in register A0 */
-
- #define SendObjectMessageGlue(table, selector) { \
- sendObjectMessageSelector, 0x223C, table, selector, messageManagerTrap \
- }
-
- #define SendMessageGlue(table, selector) { \
- sendMessageSelector, 0x223C, table, selector, messageManagerTrap \
- }
-
- #define ForwardMessageGlue(table, selector) { \
- forwardSelector, 0x223C, table, selector, messageManagerTrap \
- }
-
- #define ForwardThisMessageGlue { forwardThisSelector, messageManagerTrap }
-
-
-
- /*************/
- /* Types */
- /*************/
-
-
- typedef struct PrivateMessageClassRecord *MessageClass; /* abstract data type for message class */
-
- typedef struct PrivateMessageHandlerRecord *MessageHandler; /* abstract data type for message handler */
-
- typedef struct PrivateMessageObjectRecord *MessageObject; /* abstract data type for message object */
-
-
- /* definition of an override table... */
-
-
- struct MessageOverride{
- short messageID; /* message being overridden */
- long dispatch1; /* first dispatch selector */
- long dispatch2; /* second dispatch selector */
- };
-
- typedef struct MessageOverride MessageOverride;
-
-
- struct MessageOverrideTable{
- short numOverrides;
- MessageOverride overrides[1];
- };
-
- typedef struct MessageOverrideTable MessageOverrideTable, *MessageOverrideTablePtr;
-
-
- typedef OSType Signature;
-
- typedef void* MessageStackMark[2];
-
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
-
- typedef void (*MessageHandlerSetupProc) (void *handlerData);
-
- typedef OSErr (*MessageClassExceptionProc) (MessageObject, OSErr);
-
- typedef OSErr (*MessageObjectLoopProc) (MessageObject, void *refCon);
-
- typedef OSErr (*MessageHandlerLoopProc) (MessageHandler, void *refCon);
-
- typedef void (*MessageGlobalsInitProc) (void *messageGlobals);
-
-
-
- /**********************************************************************
- *************** Public Interfaces ***********************
- *********************************************************************/
-
-
-
- /* **************************************** */
- /* Message Class Management API Routines... */
- /* **************************************** */
-
-
-
- MessageClass NewMessageClass (long numTables, long classOptions)
- = {0x7000, messageManagerTrap};
-
- void DisposeMessageClass (MessageClass)
- = {0x7001, messageManagerTrap};
-
- MessageClass CloneMessageClass (MessageClass)
- = {0x7002, messageManagerTrap};
-
- long CountMessageClassOwners (MessageClass)
- = {0x7003, messageManagerTrap};
-
- MessageClass NewDerivedMessageClass (MessageClass parentClass)
- = {0x7004, messageManagerTrap};
-
- void *SetMessageClassDispatchProc (MessageClass, void *dispatchProc)
- = {0x7005, messageManagerTrap};
-
- MessageHandlerSetupProc SetMessageClassHandlerSetupProc (MessageClass, MessageHandlerSetupProc)
- = {0x7006, messageManagerTrap};
-
- MessageHandlerSetupProc SetMessageClassHandlerReturnProc (MessageClass, MessageHandlerSetupProc)
- = {0x7007, messageManagerTrap};
-
- MessageClassExceptionProc SetMessageClassExceptionProc (MessageClass, MessageClassExceptionProc)
- = {0x7008, messageManagerTrap};
-
- void *GetMessageClassRefCon (MessageClass)
- = {0x7009, messageManagerTrap};
-
- void *SetMessageClassRefCon (MessageClass, void *refCon)
- = {0x700A, messageManagerTrap};
-
- OSErr NewMessageHandler (MessageClass,
- long handlerPos,
- MessageOverrideTablePtr overrideTableList[],
- void *handlerData,
- Signature handlerSig,
- MessageHandler *msgHandler)
- = {0x700B, messageManagerTrap};
-
- OSErr RemoveMessageHandler (MessageClass, MessageHandler)
- = {0x700C, messageManagerTrap};
-
- OSErr InstallMessageHandlerOverride (MessageClass,
- MessageHandler,
- long messageSelector,
- long dispatch1,
- long dispatch2)
- = {0x700D, messageManagerTrap};
-
- void RemoveMessageHandlerOverride (MessageClass,
- MessageHandler,
- long messageSelector)
- = {0x700E, messageManagerTrap};
-
- void *GetMessageHandlerData (MessageClass, MessageHandler)
- = {0x700F, messageManagerTrap};
-
- void *SetMessageHandlerData (MessageClass,
- MessageHandler,
- void *handlerData)
- = {0x7010, messageManagerTrap};
-
- void DisableMessageHandler (MessageClass, MessageHandler)
- = {0x7011, messageManagerTrap};
-
- void EnableMessageHandler (MessageClass, MessageHandler)
- = {0x7012, messageManagerTrap};
-
- int MessageHandlerDisabled (MessageClass, MessageHandler)
- = {0x7013, messageManagerTrap};
-
- long CountMessageHandlers (MessageClass)
- = {0x7014, messageManagerTrap};
-
- MessageHandler GetMessageHandlerAt (MessageClass, long handlerPosition)
- = {0x7015, messageManagerTrap};
-
- Signature GetMessageHandlerSignature (MessageClass, MessageHandler)
- = {0x7016, messageManagerTrap};
-
- MessageHandler FindMessageHandler (MessageClass, Signature)
- = {0x7017, messageManagerTrap};
-
- long GetMessageHandlerPosition (MessageClass, MessageHandler)
- = {0x7018, messageManagerTrap};
-
- OSErr ForEachMessageHandlerDo (MessageClass, MessageHandlerLoopProc, void *refCon)
- = {0x7019, messageManagerTrap};
-
-
-
- /* ***************************************** */
- /* Message Object Management API Routines... */
- /* ***************************************** */
-
-
-
- MessageObject NewMessageObject (MessageClass)
- = {0x701A, messageManagerTrap};
-
- void DisposeMessageObject (MessageObject)
- = {0x701B, messageManagerTrap};
-
- MessageObject CloneMessageObject (MessageObject)
- = {0x701C, messageManagerTrap};
-
- long CountMessageObjectOwners (MessageObject)
- = {0x701D, messageManagerTrap};
-
- void *GetMessageObjectRefCon (MessageObject)
- = {0x701E, messageManagerTrap};
-
- void *SetMessageObjectRefCon (MessageObject, void *)
- = {0x701F, messageManagerTrap};
-
- MessageClass GetMessageObjectClass (MessageObject)
- = {0x7020, messageManagerTrap};
-
- long CountMessageObjects (MessageClass)
- = {0x7021, messageManagerTrap};
-
- OSErr ForEachMessageObjectDo (MessageClass, MessageObjectLoopProc, void *refCon)
- = {0x7022, messageManagerTrap};
-
-
-
- /* ***************************************** */
- /* Message Target Management API Routines... */
- /* ***************************************** */
-
-
-
- MessageObject GetMessageTarget (void)
- = {0x7023, messageManagerTrap};
-
- MessageObject SetMessageTarget (MessageObject)
- = {0x7024, messageManagerTrap};
-
- void MarkMessageStack (MessageStackMark)
- = {0x7025, messageManagerTrap};
-
- void UnwindMessageStack (MessageStackMark)
- = {0x7026, messageManagerTrap};
-
-
-
- /* ******************************* */
- /* Message Handler API Routines... */
- /* ******************************* */
-
-
-
- MessageHandler GetMessageHandler (void)
- = {0x7027, messageManagerTrap};
-
- long CountMessageHandlerInstances (void)
- = {0x7028, messageManagerTrap};
-
- void *GetMessageHandlerClassContext (void)
- = {0x7029, messageManagerTrap};
-
- void *SetMessageHandlerClassContext (void *)
- = {0x702A, messageManagerTrap};
-
- void *GetMessageHandlerInstanceContext (void)
- = {0x702B, messageManagerTrap};
-
- void *SetMessageHandlerInstanceContext (void *)
- = {0x702C, messageManagerTrap};
-
- OSErr NewMessageGlobals (long messageGlobalsSize, MessageGlobalsInitProc)
- = {0x702D, messageManagerTrap};
-
- void DisposeMessageGlobals (void)
- = {0x702E, messageManagerTrap};
-
-
- /* **************************************** */
- /* Message Sending API Routines... */
- /* **************************************** */
- #pragma push
- #pragma skipping on
- #ifndef __powerc
- #ifdef applec
-
- #pragma parameter __D0 SendObjectMessage(__A0, __D1)
- OSErr SendObjectMessage (MessageObject, long messageSelector, ...)
- = {sendObjectMessageSelector, messageManagerTrap};
-
- #pragma parameter __D0 SendObjectMessageTo(__A0, __D1, __D2)
- OSErr SendObjectMessageTo (MessageObject, long messageSelector, MessageHandler, ...)
- = {sendObjectMessageToSelector, messageManagerTrap};
-
- #pragma parameter __D0 StartObjectMessageAt(__A0, __D1, __D2)
- OSErr StartObjectMessageAt (MessageObject, long messageSelector, MessageHandler, ...)
- = {startObjectMessageAtSelector, messageManagerTrap};
-
- #pragma parameter __D0 SendMessage(__D1)
- OSErr SendMessage (long messageSelector, ...)
- = {sendMessageSelector, messageManagerTrap};
-
- #pragma parameter __D0 SendMessageTo(__D1, __D2)
- OSErr SendMessageTo (long messageSelector, MessageHandler, ...)
- = {sendMessageToSelector, messageManagerTrap};
-
- #pragma parameter __D0 StartMessageAt(__D1, __D2)
- OSErr StartMessageAt (long messageSelector, MessageHandler, ...)
- = {startMessageAtSelector, messageManagerTrap};
-
- #pragma parameter __D0 ForwardMessage(__D1)
- OSErr ForwardMessage (long messageSelector, ...)
- = {forwardSelector, messageManagerTrap};
-
- OSErr ForwardThisMessage ()
- = {forwardThisSelector, messageManagerTrap};
-
- #else
-
- OSErr SendObjectMessage (MessageObject, long messageSelector, ...)
- = {0x205F, 0x221F, sendObjectMessageSelector, messageManagerTrap, 0x518F};
-
- OSErr SendObjectMessageTo (MessageObject, long messageSelector, MessageHandler, ...)
- = {0x205F, 0x221F, 0x241F, sendObjectMessageToSelector, messageManagerTrap, 0x9EFC, 0x000C};
-
- OSErr StartObjectMessageAt (MessageObject, long messageSelector, MessageHandler, ...)
- = {0x205F, 0x221F, 0x241F, startObjectMessageAtSelector, messageManagerTrap, 0x9EFC, 0x000C};
-
- OSErr SendMessage (long messageSelector, ...)
- = {0x221F, sendMessageSelector, messageManagerTrap, 0x598F};
-
- OSErr SendMessageTo (long messageSelector, MessageHandler, ...)
- = {0x221F, 0x241F, sendMessageToSelector, messageManagerTrap, 0x518F};
-
- OSErr StartMessageAt (long messageSelector, MessageHandler, ...)
- = {0x221F, 0x241F, startMessageAtSelector, messageManagerTrap, 0x518F};
-
- OSErr ForwardMessage (long messageSelector, ...)
- = {0x221F, forwardSelector, messageManagerTrap, 0x598F};
-
- OSErr ForwardThisMessage (...)
- = {forwardThisSelector, messageManagerTrap};
-
- #endif
- #endif
- #pragma pop
-
-
- #ifdef __cplusplus
- }
- #endif
-
-
- #endif
-